// 1. 状态接口
/// <summary>
/// 订单状态抽象类（状态模式中的State接口）
/// 定义了订单在不同状态下可以执行的操作
/// 所有具体状态类都必须继承此类
/// </summary>
public abstract class OrderState
{
  /// <summary>
  /// 订单上下文引用，用于状态转换
  /// </summary>
  protected OrderContext _context;

  /// <summary>
  /// 构造函数
  /// </summary>
  /// <param name="context">订单上下文对象</param>
  public OrderState(OrderContext context)
  {
    _context = context;
  }

  /// <summary>
  /// 支付订单
  /// 不同状态下有不同的处理逻辑
  /// </summary>
  public abstract void Pay();
  
  /// <summary>
  /// 发货操作
  /// 不同状态下有不同的处理逻辑
  /// </summary>
  public abstract void Ship();
  
  /// <summary>
  /// 完成订单
  /// 不同状态下有不同的处理逻辑
  /// </summary>
  public abstract void Complete();
  
  /// <summary>
  /// 取消订单
  /// 不同状态下有不同的处理逻辑
  /// </summary>
  public abstract void Cancel();
}